/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fait.ferm.tools;

import fait.ferm.engine.TreeArrItem;
import fait.ferm.persists.SimpleDirItem;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.TreeItem;

/**
 *Класс для хранения различных вспомогательных методов.
 * @author zx
 */
public class Tools {
    
    public static void setCash(int i) {
        File f = new File("./temp");
        BufferedWriter bw = null;
        try {
            f.createNewFile();
            bw = new BufferedWriter(new FileWriter(f));
            bw.write(Integer.toString(i));
        } catch(Exception ex) {
            //
        } finally {
            try {
                bw.close();
            } catch(Exception ex) {
                //
            }
        }
    }
    
    public static int getCash() {
        int i = -1;
        File f = new File("./temp");
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(f));
            i = Integer.parseInt(br.readLine());
        } catch(Exception ex) {
            //
        } finally {
            try {
                br.close();
                f.delete();
            } catch(Exception ex) {
                //
            }
        }
        return i;
    }
    
    public static int millisecundsToDay(Long ms) {
        return (int)(ms / (float)86400000);
    }
    
    private static final SimpleDateFormat sdf= new SimpleDateFormat("dd.MM.yyyy");
	
	/**
	 * Метод преобразует массив элементов дерева в само дерево для размещения на форме. 
	 * Элементы массива должны быть отсортированы по id родителя а затем по id 
	 * @param ar массив элементов
	 * @return корневой элемент для подключения к TreeView
	 */
	public static javafx.scene.control.TreeItem<SimpleDirItem> arrItem2Tree(ArrayList<TreeArrItem> ar){
		if (ar==null || ar.isEmpty()) {
			return null;
		}
		java.util.Queue<TreeItem<SimpleDirItem>> q = new LinkedList<>();
		TreeArrItem tai = ar.get(0);
		TreeItem<SimpleDirItem> root = new TreeItem<>(new SimpleDirItem(tai.id, tai.name, ""));
		TreeItem<SimpleDirItem> curRoot = root;
		TreeItem<SimpleDirItem> ti;
		for (int i = 1; i < ar.size(); i++) {
			tai = ar.get(i);
			ti = new TreeItem<>(new SimpleDirItem(tai.id, tai.name,""));
			if(tai.parentId!=curRoot.getValue().getId()){
				curRoot = q.poll();
			}
			if(tai.parentId==curRoot.getValue().getId()) {
				curRoot.getChildren().add(ti);
				q.add(ti);
			}
		}
		q.clear();
		return root;
	}
	
	public static String dateToStr(Date d){
		return sdf.format(d);
	}
	
	public static void setProgressColor(ProgressIndicator p){
		String s1 = "-fx-progress-color: #ff3333;"; //красный
		String s2 = "-fx-progress-color: #ffb800;"; //желтый
		String s3 = "-fx-progress-color: #0066ff;"; //синий
		if(p.progressProperty().getValue()<=0.33){
			p.setStyle(s1);
		}else if(p.progressProperty().getValue()>0.33 && p.progressProperty().getValue()<=0.66){
			p.setStyle(s2);
		}else {
			p.setStyle(s3);
		}
	}
}
